home *** CD-ROM | disk | FTP | other *** search
/ The World's Largest Collection of Windows Software / The World's Largest Collection of Windows Software - Disc 2.iso / other / stdm15 / addon.txt next >
Text File  |  1994-02-12  |  11KB  |  306 lines

  1. Description of the add-on to StDemo Player
  2. ==========================================
  3.  
  4. The feature described below is not included in the shareware
  5. version of StDemo Player. If you are interested in this add-on,
  6. you may order it when you register StDemo Player. Total price of
  7. StDemo Pro is $60 (single licence).
  8.  
  9. Professional version doesn't impose limits on keyboard/mouse simulation.
  10. In "standard" version some keys are impossible to simulate (for example, 
  11. pressing Alt alone, i.e. not as a modifier to some other key) and mouse 
  12. simulation is limited to the client area of a window only. There are
  13. some other cases when mouse simulation wouldn't work, drag-and-drop from 
  14. File Manager, for instance. Professional version allows any simulation.
  15.  
  16. StDemo Pro allows to simulate all keyboard and mouse events using Windows
  17. journal capabilities. The command to use is:
  18.  
  19. :"<string>
  20.  
  21. <string> contains the list of codes which describe desired actions.
  22.  
  23. Keyboard events are simulated by sending one or more keystrokes to the 
  24. active window as if they had been entered at the keyboard.
  25. Each key is represented by one or more characters.  To specify a single 
  26. keyboard character, use the character itself.  For example, to represent the 
  27. letter a, use "a" for <string>.  If you want to represent more than one character,
  28. append each additional character to the one preceding it.  To represent the 
  29. letters a, B, and c, use "aBc" for <string>.
  30.  
  31. The plus sign (+), caret (^), percent sign (%), tilde (~), braces { }, 
  32. and parentheses ( ) have special meanings inside the <string>.  To specify one of these 
  33. characters, enclose it inside braces.  For example, to specify the plus sign, use {+}.  
  34. To send brace characters, use {{} and {}}.
  35.  
  36. To specify characters that aren't displayed when you press a key (such as 
  37. Enter or Tab) and keys that represent actions rather than characters, use the 
  38. codes shown below:
  39.  
  40. Key             Code
  41. ---             ----    
  42. Backspace       {BACKSPACE} or {BS} or {BKSP}    
  43. Break           {BREAK}
  44. Caps Lock       {CAPSLOCK}    
  45. Clear           {CLEAR}
  46. Del             {DELETE} or {DEL}    
  47. Down Arrow      {DOWN}
  48. End             {END}    
  49. Enter           {ENTER} or ~
  50. Esc             {ESCAPE} or {ESC}    
  51. Help            {HELP}
  52. Home            {HOME}    
  53. Ins             {INSERT}
  54. Left Arrow      {LEFT}    
  55. Num Lock        {NUMLOCK}
  56. Page Down       {PGDN}    
  57. Page Up         {PGUP}
  58. Print Screen    {PRTSC}    
  59. Right Arrow     {RIGHT}
  60. Scroll Lock     {SCROLLOCK}    
  61. Space           {Space} or {Blank}
  62. Tab             {TAB}
  63. Up Arrow        {UP}    
  64. F1              {F1}
  65. F2              {F2}    
  66. F3              {F3}
  67. F4              {F4}    
  68. F5              {F5}
  69. F6              {F6}    
  70. F7              {F7}
  71. F8              {F8}    
  72. F9              {F9}
  73. F10             {F10}    
  74. F11             {F11}
  75. F12             {F12}    
  76. F13             {F13}
  77. F14             {F14}    
  78. F15             {F15}
  79. F16             {F16}        
  80.  
  81. To specify keys combined with any combination of Shift, Ctrl, and Alt keys, 
  82. precede the regular key code with one or more of the following codes:
  83.  
  84. Key         Code
  85. ---         ----
  86. Shift       +
  87. Control     ^
  88. Alt         %
  89.  
  90. To specify that Shift, Ctrl, and/or Alt should be held down while several other 
  91. keys are pressed, enclose the keys' code in parentheses.  For example, to have 
  92. the Shift key held down while word "code" is being typed, use "+(code)". It has 
  93. the same effect as using "CODE". Pay attention to the case of the letters when using
  94. + modifier. It actually reverses the case. For example, +(CODE) will produce "code".
  95.  
  96. To have two modifiers to be applied to the keystroke, precede the keystroke with
  97. both, i.e. "^+{End}" means Ctrl-Shift-End.
  98.  
  99. To simulate pressing Shift, Alt or Ctrl alone use the form %(), +() or ^().
  100.  
  101. To specify repeating keys, use the form {key number};  you must put a space 
  102. between key and number.  For example, {LEFT 4} means press the Left 
  103. Arrow key 4 times; {SPACE 10} means press space 10 times; 
  104. {a 5} means press "a" 5 times.
  105.  
  106.  
  107. Mouse events are simulated by using one or more special codes in the
  108. <string>.
  109.  
  110. Action                          Code
  111. ------                          ----    
  112. LeftButtonClick                 {Lclick}
  113. RightButtonClick                {Rclick}
  114. MiddleButtonClick               {Mclick}
  115. MoveMouse                       {Move}
  116. DragWithLeftButton              {LDrag}
  117. DragWithRightButton             {RDrag}
  118. DragWithMiddleButton            {MDrag}
  119.  
  120.  
  121. "Drag" means moving the mouse with the button held pressed.
  122.  
  123. Double-click might be coded as {LClick 2}. Make sure that the current
  124. delay applied between events is small enough.
  125.  
  126. Mouse move and drag commands have "parameters" coded as numbers separated by space
  127. or "|" after the code inside the braces. First two represent the X and Y coordinates
  128. of the point where mouse movement ends. (It starts from the current cursor position).
  129. The third parameter (optional, 1 by default) shows in how many steps this movement
  130. will be executed, i.e. how many "jumps" mouse cursor will make.
  131.  
  132. The following example shows how to draw a square in the Paintbrush:
  133. {Move 200|200}{LDrag 300|200|2}{LDrag 300|300|2}{LDrag 200|300|2}{LDrag 200|200|2}
  134.  
  135. Coordinates may be expressed as "relative" if they are preceded with "+" or "-" sign.
  136. "*" represents the current coordinate.
  137.  
  138. The previous example might be modified as follows using relative coordinates:
  139. {Move 200|200}{LDrag +100|*|2}{LDrag *|+100|2}{LDrag -100|*|2}{LDrag *|-100|2}
  140.  
  141. Alt/Ctrl/Shift modifiers may be used with the mouse simulation codes in the same
  142. way as with the keyboard simulation codes.
  143.  
  144. When using coordinates, it is very important to understand and use the proper scheme 
  145. of coordinate origin and scaling. 
  146. Selecting appropriate coordinates origin allows to make your mouse simulation
  147. commands invariant to the window's position on a desktop.
  148. Selecting appropriate coordinates scaling allows to make your mouse simulation
  149. commands invariant to the window's size and/or the resolution of the screen.
  150.  
  151. There are some special codes to define origin and scaling.
  152.  
  153. Action                          Code
  154. ------                          ----    
  155. Set coordinate origin           {Origin}
  156. Set coordinates scaling         {Virtsize}
  157.  
  158. The following codes represent all possible cases of using coordinates origin:
  159.  
  160. {Origin Desktop}
  161.     The coordinates origin (0,0) is in the upper left corner of the desktop.
  162.  
  163. {Origin Window Active}
  164.     The coordinates origin (0,0) is in the upper left corner of the window area
  165.     of the currently active window.
  166.  
  167. {Origin Window Focus}
  168.     The coordinates origin (0,0) is in the upper left corner of the window area
  169.     of the window which currently owns focus.
  170.  
  171. {Origin Window Class|<classname>}
  172.     The coordinates origin (0,0) is in the upper left corner of the window area
  173.     of the window which classname matches given <classname> string. 
  174.  
  175. {Origin Window Caption|<caption>}
  176.     The coordinates origin (0,0) is in the upper left corner of the window area
  177.     of the window which caption matches given <caption> string. 
  178.  
  179. {Origin Client Active}
  180. {Origin Client Focus}
  181. {Origin Client Class|<classname>}
  182. {Origin Client Caption|<caption>}
  183.     All these cases are the same as for "Window" but the origin starts in the upper left
  184.     corner of the client area.
  185.     
  186. Coordinates scaling might be defined using the following form:
  187.  
  188. {VirtSize X|Y}
  189.  
  190. where X and Y are numbers representing the virtual size of the area chosen by
  191. {Origin} command. For example, if origin refers to the desktop - virtual size
  192. defines the size of the screen, if origin is "window" - virtual size refers
  193. to the size of the window area, if origin is "Client" - virtual size refers to
  194. the size of a client area. 
  195.  
  196. If virtual size defined as {Virtsize *|*} then all coordinates are treated as
  197. absolute. This is the default setting for VirtSize. 
  198. Otherwise coordinates are scaled to the correspondent desktop/window/client
  199. virtual size.
  200.  
  201. For example, to divide the paint area of the PaintBrush into four equal quarters, 
  202. the following sequence might be used:
  203.  
  204. :"{Origin Client Class|pbPaint}{VirtSize 1000 1000}{Move 0 500}{LDrag 1000 500}{Move 500 0}{LDrag 500 1000}
  205.  
  206. NOTE
  207. ----
  208.     {Origin} and {Virtsize} codes have LOCAL scope -- they affect only commands in the
  209. same :" line where they were coded. If subsequent :" commands don't have {Origin}/{VirtSize},
  210. GLOBAL values for them will be used. These global values are set with :O and :S
  211. commands. (Refer to the readme.txt).
  212.  
  213. Examples:
  214.  
  215. :OSWV
  216. :S1000|1000
  217. ....
  218. equal to
  219. :"{Origin Desktop}{VirtSize 1000 1000}.......
  220.  
  221.  
  222. :OACA
  223. ....
  224. equal to
  225. :"{Origin Client Active}{VirtSize *|*}.......
  226.  
  227.  
  228. :OFW
  229. :S100|100
  230. ....
  231. equal to 
  232. :"{Origin Window Focus}{VirtSize 100|100}.......
  233.  
  234.  
  235. The following example demonstrates using of the :" command...
  236.  
  237. ------------------cut here-------------------------
  238. :C11
  239. :I11
  240. :=100
  241. :(pbrush.exe
  242. :#S
  243. Let's draw some figures in Paintbrush
  244. #
  245. :"{Origin Client Class|pbPaint}{VirtSize 100 100}{Move 0 50}{LDrag 100 * 10}{Move 50 0}{LDrag * 100 10}
  246. // select circle tool
  247. :"{Origin Client Class|pbTool}{VirtSize 4 18}{Move 1 15}{LClick}
  248. // Draw several ellipses in different colors
  249. :"{Origin Client Class|pbColor}{VirtSize 32 4}{Move 9 1}{LClick}
  250. :"{Origin Client Class|pbPaint}{VirtSize 100 100}{Move 40 40}{LDrag 60 60}
  251. :"{Origin Client Class|pbColor}{VirtSize 32 4}{Move 11 1}{LClick}
  252. :"{Origin Client Class|pbPaint}{VirtSize 100 100}{Move 30 30}{LDrag 70 70 4}
  253. :"{Origin Client Class|pbColor}{VirtSize 32 4}{Move 13 3}{LClick}
  254. :"{Origin Client Class|pbPaint}{VirtSize 100 100}{Move 20 20}{LDrag 80 80 100}
  255. :#S
  256. Closing paintbrush
  257. #
  258. :"%fxn
  259. // LcalcDemo
  260. :#S
  261. The following is the "calc" sample from script.txt expressed with :" notation.
  262. .S
  263. Note using the :O and :S commands to set GLOBAL Origin and VirtSize.
  264. #
  265. :LcalcDemo
  266. :(calc.exe
  267. :S324|283
  268. :OFC
  269. // View->Standard
  270. :"%vt
  271. // Clear
  272. :#S
  273. I'm going to move the cursor to the 'CLEAR' button - and click.
  274. #
  275. :"{Move 0|0}{Move 38|66|30}{LClick}
  276. // click 2
  277. :#S
  278. Now I'm going to move the cursor to the '2' button - and click.
  279. #
  280. :"{Move 135|196|30}{LClick}
  281. // click *
  282. :#S
  283. Now I'll move to the '*' button - and click.
  284. #
  285. :"{Move 242|152|30}{LClick}
  286. // click 3
  287. :#S
  288. And here we go to the '3' button - and click.
  289. #
  290. :"{Move 189|196|30}{LClick}
  291. // click =
  292. :#S
  293. Now I'm going to click on '=' and, truly, I'm expecting to get....
  294. #
  295. :"{Move 295|240|30}{LClick}
  296. :#S
  297. Don't tell me that the result is not equal to six, please!
  298. #
  299. :"%E{Left}{Down 5}{Enter}
  300. :#S
  301. Calc must be closed now.
  302. .S
  303. That's all.
  304. #
  305. ------------------cut here-------------------------
  306.